/**
 * Author : Jorge Mejuto Create : 19/05/2009
 */

package net.eyra.negocio.dao;

import java.util.List;

import net.eyra.negocio.entidades.gestion.propietarios.CuentaBancaria;
import net.eyra.negocio.entidades.gestion.propietarios.EstadoPropietario;
import net.eyra.negocio.entidades.gestion.propietarios.Propietario;

import org.hibernate.HibernateException;
import org.hibernate.Session;

public class PropietarioDao {

    public Propietario getPropietario(int id_propietario) throws EyraDaoException {
        Session session = null;
        Propietario propietario = null;
        try {
            session = HibernateUtil.getSession();
            session.beginTransaction().begin();
            propietario = (Propietario) session.get(Propietario.class, id_propietario);
            session.beginTransaction().commit();
        } catch (HibernateException e) {
            if (session != null) session.beginTransaction().rollback();
            throw new EyraDaoException(e);
        } finally {
            if (session != null && session.isOpen()) session.close();
        }
        return propietario;
    }

    public List<Propietario> getNombrePropietarios() throws EyraDaoException {
        Session session = null;
        List<Propietario> _lista = null;
        try {
            session = HibernateUtil.getSession();
            session.beginTransaction().begin();
            _lista = session.createSQLQuery("SELECT id_propietario, TRIM(CONCAT(nombre,' ',apellido1,' ',apellido2)) as nombre "
                                                    + "FROM propietarios " + "ORDER BY apellido1, apellido2, nombre").list();
            session.beginTransaction().commit();
        } catch (HibernateException e) {
            if (session != null) session.beginTransaction().rollback();
            throw new EyraDaoException(e);
        } finally {
            if (session != null && session.isOpen()) session.close();
        }
        return _lista;
    }

    public List<EstadoPropietario> getEstadosPropietario() throws EyraDaoException {
        Session session = null;
        List<EstadoPropietario> _lista = null;
        try {
            session = HibernateUtil.getSession();
            session.beginTransaction().begin();
            _lista = session.createCriteria(EstadoPropietario.class).list();
            session.beginTransaction().commit();
        } catch (HibernateException e) {
            if (session != null) session.beginTransaction().rollback();
            throw new EyraDaoException(e);
        } finally {
            if (session != null && session.isOpen()) session.close();
        }
        return _lista;
    }

    public EstadoPropietario getEstadoPropietario(int id_estado_propietario) throws EyraDaoException {
        Session session = null;
        EstadoPropietario estado_propietario = null;
        try {
            session = HibernateUtil.getSession();
            session.beginTransaction().begin();
            estado_propietario = (EstadoPropietario) session.get(EstadoPropietario.class, id_estado_propietario);
            session.beginTransaction().commit();
        } catch (HibernateException e) {
            if (session != null) session.beginTransaction().rollback();
            throw new EyraDaoException(e);
        } finally {
            if (session != null && session.isOpen()) session.close();
        }
        return estado_propietario;
    }

    public void setPropietario(Propietario propietario) throws EyraDaoException {
        Session session = null;
        try {
            session = HibernateUtil.getSession();
            session.beginTransaction().begin();
            session.saveOrUpdate(propietario);
            session.flush();
            session.beginTransaction().commit();
        } catch (HibernateException e) {
            if (session != null) session.beginTransaction().rollback();
            throw new EyraDaoException(e);
        } finally {
            if (session != null && session.isOpen()) session.close();
        }
    }

    public void setCuentaBancaria(CuentaBancaria cta_act) throws EyraDaoException {
        Session session = null;
        try {
            session = HibernateUtil.getSession();
            session.beginTransaction().begin();
            session.saveOrUpdate(cta_act);
            session.flush();
            session.beginTransaction().commit();
        } catch (HibernateException e) {
            if (session != null) session.beginTransaction().rollback();
            throw new EyraDaoException(e);
        } finally {
            if (session != null && session.isOpen()) session.close();
        }
    }

}
